/*
 * @Description: file content
 * @Author: ZeT1an
 * @Date: 2022-01-18 19:36:39
 * @LastEditors: ZeT1an
 * @LastEditTime: 2022-01-19 09:14:35
 * @LastEditContent: 
 */
/**
 * JS中函数作为第一公民的2个特征
 * 1.JS中函数使用非常灵活
 * 2.JS中函数可以作为另外一个函数的参数，也可以作为另外一个函数的返回值来使用
 */

/**
 * 什么是高阶函数
 * 1.一个函数接收另外一个函数作为参数，或者返回一个函数时称为高阶函数
 */

/**
 * 函数（Function）和方法（method）的区别
 * 方法是使用对象调用的函数。
 */

/**
 * 组成闭包的2部分：函数 + 可以访问的自由变量。
 */

/**
 * JS数组中常用的6个高阶函数
 * filter, map, reduce, find, findIndex, foreach
 */

/**
 * 闭包定义的3点总结
 * 1.当一个函数可以访问了上层作用域的自由变量时，称为是一个闭包。
 */

/**
 * 什么是闭包的内存泄漏
 * 当函数关联的上层作用域变量不再使用，且不能被释放时，称为闭包的内存泄漏。
 */

/**
 * 怎么解决闭包的内存泄漏
 * 将闭包的函数引用置为null，这样函数对应的上层作用域AO对象将不可达，在下一次检测中，GC会将它们回收。
 */

/**
 * 理解闭包的内存图
 */

/**
 * V8引擎的实现中，一个整数占据8个字节
 */
